1. Field of the Invention
This invention relates in general to software testing, particularly to software test automation, and more particularly to systems, program product, and methods to enable visual recording and editing of test automation scenarios for markup applications.
2. Description of the Prior Art
Software has become an essential part of everyday life worldwide. Many businesses and individuals rely on software to support their daily activities. The quality and reliability of software has never been as important and critical as it is today. Software providers, whether they provide packaged software products or customized solutions sold to businesses, consider the quality of the software they sell a very serious matter. Software defects can severely jeopardize their entire business, especially given the reality that these defects can detrimentally impact customer loyalty and trust. Recognized by the inventors is that this demand for software quality has been an important catalyst for innovations in the software development lifecycle and specifically in how software is tested throughout that cycle. Another important catalyst is the increasing pressures to produce software faster with lower development and maintenance costs.
Many software development companies test their software by compiling a list of test scripts (a.k.a. test scenarios or test cases) that they run against their software to ensure quality and validate the design of the software. Some companies hire employees or contractors to run these tests manually where others invest in automating these tests so that, once automated, they can be run anytime without any manual labor, and with lower cost. There are many advantages to test automation, including: a reduction in labor costs by eliminating the need for staff for manual execution, a reduction in execution time to allow for faster turnaround on results, e.g., on the order of thousands of test runs in just a few hours; and more accurate and consistent results.
Test scenario automation is typically performed in several ways. Perhaps the oldest is manual scripting using a programming language. A company, for example, hires a professional developer to translate a test scenario to an automated scenario by crafting the code of that test scenario using a programming language that can then be executed. Although this methodology is considered by some practitioners to be the most flexible way to build test automation, it is also generally the most costly as it requires hiring expensive software developers to craft, update, and maintain such automation. A more modern approach includes using a recorder. There are several products on the market today, such as, for example, HP-Mercury Quick Test Professional and Microsoft's Visual Studio Team Test, that enables users to launch their target application under test (AUT), and run their test scenario manually against the application once—which will then record the actions automatically without a need to write any code. Although this can be the cheapest and quickest way to build test automation, such tools are extremely complex and require higher learning costs, which can rival the cost of manual scripting.
There are many categories of contemporary software applications being developed that require testing and span multiple technologies. One type of application, for example, is markup language based applications. These applications are defined using markup languages, such as, for example, HTML, XHTML, XML, XAML, or other similar markup languages. Using a host (a.k.a. a Web browser), these applications are interpreted as graphical user interface (GUI) elements which the user can use to interact with the application logic. A classic example of these types of applications is a web application. Web applications run in a host, such as, for example, Microsoft's Internet Explorer™ and Mozilla's FireFox™ which can interpret an HTML document as visual elements to present it to the user for interaction.
The inventors have recognized various trends with respect to current Web applications being developed. For example, Web applications are being developed using dynamic and rich languages like ASP.NET, PHP, or RubyOnRails, etc., which enable users to build relatively complex applications that are producing complex markups by abstracting the details of HTML into a higher level logical component. Developers are no longer required to be aware of how a specific component's HTML is rendered, and can simply work with the object model provided by these dynamic languages. Users using ASP.NET, for example, can work directly with a “Calendar” component that takes charge of rendering the underlying HTML markup of a calendar. The inventors have also recognized that Web applications are relying more on Javascript and client side logic to perform rich and snappy user experiences that do not require HTTP requests back and forth between client and server. The inventors have further recognized that Web applications are now producing relatively complex user interface (UI) experiences that were NATO previously limited to only rich client applications. Contemporary Web application, using helper libraries like “Yahoo client API library or ASP.NET Ajax extensions,” can easily perform actions like drag-drop, resize, modal dialogs pop-up, etc.
The inventors have recognized that the above trends in web application development have resulted in some significant short-comings in current test automation recorder tools. For example, many existing tools perform the automated recording of a web test scenarios by recording the HTTP traffic back and forth between the client (web browser) and the server. Given that many contemporary applications are moving to rely more on the logic of the client than the server, the inventors have recognized that these applications and their scenarios can no longer be recorded using these HTTP based tools. In fact, many of the contemporary applications built today cannot use any of these tools to perform test automation. An example of such tools is the Microsoft Visual Studio Team Test 2005.
The increasingly complex nature of web applications and its increased richness has dramatically increased the complexities of automating UI interactions with these applications. To address these new scenarios, contemporary recording tools in the market today have introduced several add-on options and windows. Recognized by the inventors, however, is that these add-ons simply make the experience more scattered and extremely complex and cumbersome, and that the recording solutions are no longer intuitive and easy to use. Instead users have to configure many options just to have one scenario automated properly. In addition, users that utilize dynamic web development technologies (i.e. ASP.NET) or use 3rd party components, such as Infragistics's or Telerik's, have to be intimately knowledgeable with the underlying markup of the application to be able to “figure out” how to automate the scenarios. This leaves a huge gap in knowledge, for example, for non-technical quality assurance (QA) professionals that are simply trying to automate a common end user scenario. Further, recognized by the inventors is that contemporary recording tools provide very little extensibility in the web automation space to extend the overall designer GUI and recording to target custom 3rd party components. For example, the inventors believe that none of the tools currently provided in the market offer any extensibility model that specifically targets web scenarios. In addition, the inventors believe that none of these tools offer any ways to provide or extend visual recognition, action recording, verification and synchronization mechanisms, particularly for custom components.
HP-Mercury QuickTest and IBM Rational suites do offer an extensibility model for their respective test automation tools, but that extensibility model is specific to rich windows applications and will not function on web applications. Web applications offer a completely different challenge for extensibility than rich client applications because the nesting level of a component, in addition to its attributes, needs to be part of how a component is recognized, versus simply recognizing the component's attributes and the relative coordinates within that component where the action took place. Further, these tools do not offer any extensibility model for the visual recognition aspect of these components, such as, for example, the identifying icon, color and component nesting, which various embodiments of the present invention addresses. Still further, it is recognized by the inventors is that action recording extensibility for web applications needs to be accomplished by inspecting the atomic target markup element attributes that the action is being performed against, to include its hierarchal location within the Document Object Model of the markup application (e.g., its location with respect to its sibling markup elements, parent chain, and child elements, and any other abstracted components that it might be nested in on the web page), and not merely in the context of the atomic element and the coordinates of the action against that element as provided in the Windows application-based suites.
Accordingly, recognized by the inventors is the need for a system, program product, and methods of providing test automation, which can provide a simple and intuitive recording so that non-technical professionals can utilize the automated systems. Also recognized is the need for a system, program product, and methods of test automation which provide visual cues, action recording, verification and synchronization mechanisms and that can extend the action/action recording, verification and synchronization mechanisms for custom components.